"""
二、函数的重写
父类（被继承的类）的函数都会被子类（继承的类）继承，当基类（父类）中的某个函数不完全适用于子类时，
就需要在子类中重写父类的这个函数，而且函数的名字必须一模一样。
"""

"""
python还有一个super（）函数，通过使用super（）函数，在重写父类函数时，让super（）调用父类中封装的函数。
如果在开发中，子类的函数中包含父类的函数，父类原本的函数是子类函数的一部分，就可以采用扩展的方式。

扩展的方式步骤：
1、在子类中重写父类的函数
2、在需要的位置使用super（）.父类函数 来调用父类函数的执行
3、代码其他的位置针对子类的需求，编写子类特有的代码实现
"""


class Parent:

    def __init__(self, name):
        self.name = name
        print('parent的init函数被执行了')

    def say_hello(self):
        print(f'{self.name}:hello')
        print('parent的say_hello函数被执行了')


class Son(Parent):

    def __init__(self, name, age):
        # self.name = name
        super().__init__(name)  # super 调用父类的函数

        self.age = age
        print('son的init函数被执行了')

    def say_hello(self):
        print(f'{self.name}:hello world!')
        print('Son的say_hello函数被执行了')


s1 = Son('张三', 23)
s1.say_hello()  # 就近原则
